package experiment.e08.code;

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/11/17 15:02
 * @package experiment.e08.code
 * @description 编写一个有两个文本区的小应用程序, 当一个文本区中输入若干个数时,
 * 另一个文本区同时对所输入的数进行求和运算并求出平均值,也就是说随着输入的变化,
 * 另一个文本区不断地更新求和及平均值。
 */

public class Ch04 {
    public static int count = 0;

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("小应用程序");
        jFrame.setLayout(new FlowLayout());
        jFrame.setSize(400, 200);

        // 创建组件
        JLabel inputLabel = new JLabel("输入框:");
        JLabel sumLabel = new JLabel("总和:");
        JLabel avgLabel = new JLabel("平均数:");
        JLabel countLabel = new JLabel("添加次数:");
        JTextField inputField = new JTextField(5);
        JTextField sumField = new JTextField(5);
        JTextField avgField = new JTextField(5);
        JLabel countNum = new JLabel(String.valueOf(0));


        // 设置监听器
        KeyListener key_Listener = new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (inputField.getText() != null && !inputField.getText().equals("")) {
                        // 先获取field中的值
                        double inputValue = Double.parseDouble(inputField.getText());
                        double sumValue = 0;
                        try {
                            sumValue = Double.parseDouble(sumField.getText());
                        } catch (NumberFormatException numberFormatException) {
                            numberFormatException.printStackTrace();
                        }

                        // 计算值
                        count++;
                        double sumTmp = sumValue + inputValue;
                        sumField.setText(String.valueOf(sumTmp));
                        avgField.setText(String.valueOf(sumTmp / count));
                        countNum.setText(String.valueOf(count));

                        // 设置输入框为空
                        inputField.setText("");
                    }
                }
            }
        };
        inputField.addKeyListener(key_Listener);

        // 添加组件
        jFrame.add(inputLabel);
        jFrame.add(inputField);
        jFrame.add(sumLabel);
        jFrame.add(sumField);
        jFrame.add(avgLabel);
        jFrame.add(avgField);
        jFrame.add(countLabel);
        jFrame.add(countNum);

        jFrame.setVisible(true);

    }
}
